﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security;
using ClasseAplicacao;

namespace WindowsFormsApplication2
{


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string[,] tempMatriz;
        int tamanho = 0;

        // Implementada por Eduardo Corazzin dia 12/03/2013
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                slabel1.Text = "Importando texto";
                //define as propriedades do controle 
                //OpenFileDialog
                this.ofd1.Title = "Selecionar TXT";
                ofd1.InitialDirectory = @"C:\";
                //filtra para exibir somente arquivos de Texto
                ofd1.Filter = "Text (*.TXT)| *.txt";
                ofd1.CheckFileExists = true;
                ofd1.CheckPathExists = true;
                ofd1.FilterIndex = 2;
                ofd1.RestoreDirectory = true;
                ofd1.ReadOnlyChecked = true;
                ofd1.ShowReadOnly = true;
                string[] lines;

                Regra0 objRegras0 = new Regra0();
                Regra1 objRegras1 = new Regra1();
                Regra2 objRegras2 = new Regra2();
                Regra3 objRegras3 = new Regra3();
                Regra4 objRegras4 = new Regra4();
                Regra5 objRegras5 = new Regra5();
                Regra9 objRegras9 = new Regra9();

                DialogResult dr = this.ofd1.ShowDialog();
                

                lines = System.IO.File.ReadAllLines(ofd1.FileNames[0]);
                string[,] Matriz = new string[lines.Length, 95];
               

                if (dr == System.Windows.Forms.DialogResult.OK)
                {
                    // Le os arquivos selecionados 
                    foreach (String arquivo in ofd1.FileNames)
                    {
                        txtSel.Text = arquivo;
                        
                    }
                }
                //progress bar
                pgr1.Visible = true;
                pgr1.Maximum = lines.Length + 1;
                pgr1.Value = 1;

                for (int contador = 0; contador < lines.Length; contador++)
                {
                    pgr1.Value++;

                    switch ( lines[contador][0] )
                    {
                        case '0':
                            objRegras0.getMatriz(lines, Matriz, contador);
                            break;

                        case '1':
                            objRegras1.getMatriz(lines, Matriz, contador);
                            break;

                        case '2':
                            objRegras2.getMatriz(lines, Matriz, contador);
                            break;

                        case '3':
                            objRegras3.getMatriz(lines, Matriz, contador);
                            break;

                        case '4':
                            objRegras4.getMatriz(lines, Matriz, contador);
                            break;

                        case '5':
                            objRegras5.getMatriz(lines, Matriz, contador);
                            break;

                        case '9':
                            objRegras9.getMatriz(lines, Matriz, contador);
                            break;
                    }
                   

                }

                pgr1.Visible = false;
                pgr1.Value = 0;

                tempMatriz = Matriz;
                tamanho = lines.Length;
                slabel1.Text = "Escolha o formato de saída";

            }
            catch (SecurityException ex)
            {
                // O usuário  não possui permissão para ler arquivos
                MessageBox.Show("Erro de segurança Contate o administrador de segurança da rede.\n\n" +
                                            "Mensagem : " + ex.Message + "\n\n" +
                                            "Detalhes (enviar ao suporte):\n\n" + ex.StackTrace);
            }
            catch (Exception ex)
            {
                // Não pode carregar o arquivo (problemas de permissão)
                MessageBox.Show("Não é possível acessar o arquivo : . Você pode não ter permissão para ler o arquivo , ou " +
                                           " ele pode estar corrompido.\n\nErro reportado : " + ex.Message);
            }
            
        }//fim e evento botão


        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {

        }
        // Implementada por Eduardo Corazzin dia 16/03/2013
        private void button2_Click(object sender, EventArgs e)
        {
            try{
            //atribuição da classe
            clExcel temp = new clExcel();

            //progress bar
            slabel1.Text = "Exportando para Excel";
            pgr1.Visible = true;
            pgr1.Maximum = tamanho + 1;
            pgr1.Value = 1;

            temp.CriarExcel();
            
                for(int i=1; i < 95; i++)
                {
                    temp.PopularExcel(1, i, temp.CriarHeader(i));
                }
            
            //Popular celulas excel
            for (int i = 2; i <= tamanho+1; i++)
            {
                pgr1.Value++;
                for (int j = 1; j < 94; j++)
                {
                    temp.PopularExcel(i, j, tempMatriz[i-2,j-1]);                   
                }
            }
            temp.SalvarExcel();
            pgr1.Value = 0;
            pgr1.Visible = false;
            slabel1.Text = "arquivo XLS salvo com sucesso";
        }
        catch (Exception ex)
            {
                // Não pode carregar a imagem (problemas de permissão)
                MessageBox.Show("Problema em salvar o arquivo excel " + ex.Message);
                slabel1.Text = "Problema ao salvar o arquivo XLS";
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        // Implementada por Eduardo Corazzin dia 19/03/2013
        private void btnHtml_Click(object sender, EventArgs e)
        {
            try
            {
                //atribuição do html
                clHtml temp = new clHtml();
                temp.CriarHtml();

                for (int i = 1; i < 95; i++)
                {
                    int linha = 1;
                    temp.PopularHtml(linha, temp.CriarHeader(i));
                }
                //progress bar
                slabel1.Text = "Exportando para HTML";
                pgr1.Visible = true;
                pgr1.Maximum = tamanho + 1;
                pgr1.Value = 1;

                //popular HTML
                for (int i = 0; i < tamanho; i++)
                {
                    int linha = 0;
                    temp.PopularHtml(linha, "");
                    pgr1.Value++;

                    for (int j = 0; j < 95; j++)
                    {
                        linha = 1;
                        temp.PopularHtml(linha, tempMatriz[i, j]);
                        
                        
                    }
                }
                temp.FecharHtml();
                pgr1.Value = 0;
                pgr1.Visible = false;
                slabel1.Text = "arquivo HTML salvo com sucesso";
            }
            catch (Exception ex)
            {
                // tratamento de erros
                MessageBox.Show("Problema em salvar o arquivo HTML " + ex.Message);
                slabel1.Text = "Problema ao salvar o arquivo";
            }

        }

        private void txtSel_TextChanged(object sender, EventArgs e)
        {

        }

        private void btnCSV_Click(object sender, EventArgs e)
        {
            try
            {
                //atribuição do clCsv
                clCsv temp = new clCsv();
               
                //progress bar
                slabel1.Text = "Exportando para Csv";
                pgr1.Visible = true;
                pgr1.Maximum = tamanho + 1;
                pgr1.Value = 1;
                
                //popular csv
                for (int k = 1; k < 95; k++)
                {
                    int linha = 1;
                    temp.CriarCsv(linha, temp.CriarHeader(k));
                }
                
                for (int i = 0; i < tamanho; i++)
                {
                    int linha = 0;
                    temp.CriarCsv(linha, "");
                    pgr1.Value++;

                    for (int j = 0; j < 95; j++)
                    {
                        linha = 1;

                        temp.CriarCsv(linha, tempMatriz[i, j]);
                    }
                }
                temp.FecharCsv();
                pgr1.Value = 0;
                pgr1.Visible = false;
                slabel1.Text = "arquivo CSV salvo com sucesso";
            }
            catch (Exception ex)
            {
                // tratamento de erros
                MessageBox.Show("Problema em salvar o arquivo CSV " + ex.Message);
                slabel1.Text = "Problema ao salvar o arquivo CSV";
            }
        }

    }

    }

